#define _CRT_SECURE_NO_WARNINGS
//#include <stdio.h>
//#include <stdlib.h>
//
//int main(int argc, char* argv[])
//{
//    char S[101] = "";
//    scanf("%s", S);
//    int c = strlen(S) - 1;
//    if (S[c] == '1')
//        S[c] = '0';
//    else
//        S[c] = '1';
//    printf("%s", S);
//    return 0;
//}
//#include <stdio.h>
//#include <stdlib.h>
//
//int main(int argc, char* argv[])
//{
//    char S[11] = "";
//    char T[1001] = "";
//    scanf("%s", S);
//    scanf("%s", T);
//    int i = 0;
//    for (i = 0; i < strlen(T); i++) {
//        if (isdigit(T[i])) {
//            T[i] = S[(T[i] - '0')];
//        }
//    }
//    printf("%s", T);
//    return 0;
//}
//#include <stdio.h>
//#include <stdlib.h>
//
//int main(int argc, char* argv[])
//{
//
//	int a, b, x;
//	scanf("%d %d %d", &a, &b, &x);
//	int c = 1;
//	int i = 0;
//	for (i = 1; i <= x; i++) {
//		c = c * 10;
//	}
//	a %= c;
//	long long y = 1;
//	while (b) {
//		if (b & 1) {
//			y=y* a % c;
//		}
//		b >>= 1;
//		a = a * a % c;
//	}
//	printf("%lld", y);
//	return 0;
//}
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char* argv[])
{
    int n = 0;
    scanf("%d", &n);
    int x = 0;
    int y = 0;
    int sum = 0;
    for (x = 1; x <= (n-1); x++) {
        y = n - x;
        int p = x & y;
        if (0 ==p) {
            sum++;
        }
    }
    printf("%d", sum);
    return 0;
}